import {reqGoodsInfo,reqAddOrUpdateShopCart} from '@/api';
//封装游客身份模块uuid---->生成一个随机字符串(不能改变)
import {getUUID} from '@/utils/uuid_token';

//detail模块的小仓库
const state = {
    goodInfo:{},
    uuid_token: getUUID(),//游客临时身份
};
const actions = {
    //获取产品信息的action
    async getGoodInfo({commit},skuId){
        let result = await reqGoodsInfo(skuId);
        if (result.code == 200) {
            commit('GETGOODINFO',result.data);
        }
    },
    //将产品添加到购物车中或者修改产品的个数
    async addOrUpdateShopCart({commit},{skuId,skuNum}){
        //加入购物车返回的解构。
        //加入购物车以后(发请求),前台将参数带给服务器,服务器写入数据成功,没有返回其他的数据,只返回code=200代表这次操作成功
        //因为服务器没有返回其余数据,就不需要三连环存储数据(仓库存储数据了)
        //当前函数返回的是一个Promise,表示成功或者失败
        let result = await reqAddOrUpdateShopCart(skuId,skuNum);
        if (result.code==200) {//成功的标记，代表服务器加入购物车成功
            return 'ok';
        } else {//失败的回调，代表加入购物车失败
            return Promise.reject(new Error('faile'));
        }
    }
};

const mutations = {
    GETGOODINFO(state,goodInfo){//data
        state.goodInfo = goodInfo;
    }
};
//简化数据而生
const getters = {
    //路径导航简化的数据
    categoryView(){
        //如果获取不到对象的属性，要保证不为空对象
        return state.goodInfo.categoryView||{};
    },
    //简化产品信息的数据
    skuInfo(){
        return state.goodInfo.skuInfo||{};
    },
    //产品售卖属性的简化
    spuSaleAttrList(){
        return state.goodInfo.spuSaleAttrList||[];
    }
};

export default {
    state,
    actions,
    mutations,
    getters,
}